package com.bdqn.base;

import com.alibaba.fastjson2.JSONObject;

import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;

/**
 * Q 通用查询封装对象
 *
 * @author LILIBO
 * @since 2022-06-24
 */
public class Q implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 查询编号
     */
    private Integer id;

    /**
     * 查询名称（完全匹配）
     */
    private String name;

    /**
     * 查询关键字（模糊匹配）
     */
    private String keyword;

    /**
     * 查询类型
     */
    private Integer type;

    /**
     * 查询状态
     */
    private Integer status;

    /**
     * 查询开始时间
     */
    private String beginDate;

    /**
     * 查询结束时间
     */
    private String endDate;

    /**
     * JSON格式参数
     */
    private String jsonAttr;

    /**
     * 通过jsonAttr参数映射到Map集合（可在Mapper映射文件中使用参数）
     */
    private Map<String, Object> attr;

    /**
     * 通过jsonAttr参数解析JSON格式并映射到Map集合
     *
     * @param jsonAttr
     */
    public void setJsonAttr(String jsonAttr) {
        this.jsonAttr = jsonAttr.trim();
        if (!this.jsonAttr.isEmpty() && this.jsonAttr.startsWith("{") && this.jsonAttr.endsWith("}")) {
            JSONObject parse = JSONObject.parseObject(this.jsonAttr);
            this.attr = new HashMap<>();
            this.attr.putAll(parse);
        }
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getKeyword() {
        return keyword;
    }

    public void setKeyword(String keyword) {
        this.keyword = keyword;
    }

    public Integer getType() {
        return type;
    }

    public void setType(Integer type) {
        this.type = type;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public String getBeginDate() {
        return beginDate;
    }

    public void setBeginDate(String beginDate) {
        this.beginDate = beginDate;
    }

    public String getEndDate() {
        return endDate;
    }

    public void setEndDate(String endDate) {
        this.endDate = endDate;
    }

    public String getJsonAttr() {
        return jsonAttr;
    }

    public Map<String, Object> getAttr() {
        return attr;
    }

    public void setAttr(Map<String, Object> attr) {
        this.attr = attr;
    }

}
